Images of faces are frequently used for identifying people. As used herein, and not to be confused, detection pertains to what is in an image, i.e., are there any faces in the image or not? Identification pertains to who is in the image, i.e., determining the identity of a face in an image.
In face identification, the unknown face can be represented by a vector of features. To compare two face images, the feature vectors are used to compute a similarity score. The higher the similarity score the more similar the faces. In one example face identification application, the feature values are floating point numbers stored in 32 bits. A feature vector for a single face has on the order of 1000 features, i.e., 32,000 bits. Obviously, such large feature vectors consume memory and require a considerable amount of resources to process. This is particularly true where the underlying database of known reference images can contain millions of images.
An obvious solution is to compress the feature vectors. However, it is well known that compressing data discards data, and operations on compressed data decrease the accuracy of the results.
Face Identification
One of the most visually distinguishing features of a person is the face. Therefore, face detection and identification in still and moving images (videos) is an important technology for many applications where it is desired to identify a person from images. Face identification presents an extremely difficult challenge for computer vision technology.
For example, in facial images acquired by surveillance cameras, the lighting of a scene is often poor and uncontrolled, and the cameras are generally of low quality and usually distant from potentially important parts of the scene. The location and orientation of the faces in the scene usually cannot be controlled. Some facial features, such as the hairline, eyebrows, and chin are easily altered. Other features, such as the mouth are highly variable, particularly in a video.
The core of a face identification system is a similarity function that takes as input two images and outputs a similarity score. The face similarity function can be used to compare an image of an unknown face (an input image) with a set of images of known faces (reference images). The set of reference images can include multiple images of the same face. Each image has an associated identification. The unknown input face is identified as the identity of the reference image with largest similarity score when compared to the input face as long as the largest similarity score is above a threshold. Otherwise the input face remains unknown.
There are many methods for computing a similarity score between two faces. Almost all methods involve first computing a feature vector for each of the two faces and then comparing the feature vectors. Well known methods use principal component analysis (Eigenfaces), linear discriminant analysis (Fisherfaces), and elastic bunch graphs.
As a problem, the size of the features can be very large, requiring a large amount of computer memory to store.